
Every time you create a Particle Group within the Particle
Group Tree View, you automatically create new Group operators within
the Create
Rollouts. The two entities are inexorably linked together, and you
can select your Particle Groups from either the Particle Group Tree View
or from within the Wire
Setup View.
If you're Particle Group Tree View looks like this:

Then you'll see the following in the Create -> Groups Rollout:

As you can see, there is a direct one-to-one relationship for all of the
groups in that they not only exist in a hierarchical tree view on the
left side of the interface, but they also exist as operators that can
be used to wire up parameters on the right side of the interface.
Now when you click on the Group within the Group Tree View, you will be
presented with a number of rollouts on the right-hand side of the user
interface. These rollouts let you set how the particles look in the 3ds
Max viewports, as well as add Data Channels to each group
for use within your Wire Setup View. These Data Channels can be very useful
for advanced effects and give you an extra amount of flexibility when
building your particle animations. Keep reading to learn more about these
Data Channels.
Remember that the look and display for your individual particle groups will show up as you set them in the Groups Rollouts, unless you turn on the Force this Setting checkbox within the Master Dynamic rollout from within the DynamicSet Tree View.
Data Channels is a technology used in thinkingParticles since R1. With the release of thinkingParticles Version 3.0 the Data Channel concept should no longer be used to transfer data between particles. Instead the newly introduced memory operator should be used whenever possible. However, because of compatibility, this feature is still implemented and fully functional and for complex BlackBoxes data channels might be still a good choice!
One concept is the ability to attach any kind of value
to a particle. Data Channels are a very flexible way
of adding features to a particle that are not necessarily known to the
system beforehand. What this means is that you can define new Output Data
Streams for your Group Operators that represent data it would not normally
be aware of. These output data streams can be based on their own rules
and conditions.

As you can see from the screen shot above, every particle Group has a basic
parameter set with various controls. One control is the viewport display
or color assigned to the particles in that group. Another standard option
in the particle group is the Data Channels list. Several value types can
be added to a particle group.
The options are:
Float
Int
Point3
Alignment
Color
Next, we'll discuss how you can utilize these various Data Channel types
to your advantage.
There are situations where your particle animation might need one or
more special values that are usually not part of a standard thinkingParticles
particle data stream. A particle data stream handles
all of the information that is needed to control and modify the particle
behavior. Particle Size, Age, Alignment, Mass and many more are common
parameters that are needed by many of the operators.
The concept surrounding a Data Channel may take a bit of getting used to,
but it can be a VERY powerful tool for you when needed. Since the data
that comes from this channel can be driven by other rules and conditions,
you can build very complicated data streams which can refine your particle
animation.
There are several steps needed in order to create a new Data Channel.
Within the Group itself, you must add a new Data Channel Type.
Select a value type (Float) from the dropdown list.
In the text edit field above, type in a descriptive name for this value
Press the Add button to add the parameter to the particle Group
Next, you need to create the Data Channel by creating a Data Channel Operator in your Wire Setup View.
Once you have a Data Channel Operator, you must Initialize it.
1A) You connect the Particle Group (the one that has the channel from Step
#1) to it so that it uses these particles as its source.
2A) Next, you feed in a data stream value that represents the data type
you want it to represent.
This may sound confusing, so let's walk through a quick example.
Lets say that a data stream is needed to represent the Heat value for a
particle. How would this be done? A particle data stream doesn't provide
this kind of information natively, but by using a Data Channel, it should
be possible to construct one.
The first thing the user would do is select their Particle Group in the
Particle Group Tree View. Next, they would consider which kind of data
value they would expect from this custom Output Data Stream. In this example,
let's assume they want it as a Float value. So you choose a name and select
the Float data type and hit ADD as shown below.

Once you have created a new channel, you need to define it. So you go to
your DynamicSet and add a new Data Channel operator into your Wire Setup
View, along with the Group that has the new data channel. You connect
them so that the Data Channel is using the modified Group as the source.

As you can see above, there is a particle Group called HotParts
that contains the new data channel called Heat Index.
This is the Float data stream that was set up previously within the HotParts
Group. Next, you need to feed in a Float value to the Data Channel operator
to initialize it.
This is where the fun really starts. You can really get as in-depth here
as you like, since you don't have to pipe a static value into this Data
Channel. For instance, perhaps to determine the Heat Index value, you
could create a set of rules (maybe as a Black Box) that
calculates the number and force of the collisions each particle has had,
in a specified amount of time. A particle with more collisions would appear
to be much "hotter" and get a higher Heat Index value. Those
particles that exceed the Heat Index value might then be passed to another
Group to further refine their motion - such as increasing their speed
to indicate an "excited state".

In the example above a Black Box called Heat Index Test
has been added to the DynamicSet and pipes its Output Data Stream into
the Data Channel.
So what happens next? Now that the new Data Channel is set up and has a
value being fed into it, it can be used from within the particle Group
just like any other Output Data Stream. As shown below, a new DynamicSet
was created to test the Heat Index value, and based on a set Threshold
Condition, particles exceeding that value are placed into a new Group
Operator called Group.

One more thing worth noting is, that since you are not limited to a single
Data Channel within your particle Groups, you must take care to keep them
all in order. To do this, the Data Channel Operator contains a single
spinner within it, where you will set it's Index Value. It is important
that you NOT give two separate Data Channels the same Index Value, since
this number determines which Data Channel is affected within your particle
animation.
![]()
As demonstrated with this little example, thinkingParticles offers unlimited
flexibility and lets you create and control particle effects in ways no
other system can provide.